import os
import shutil
from pathlib import Path
from datetime import datetime
def clean_directory(dir_path):
    """清理指定目录中的所有文件和子目录"""
    try:
        # 将路径转换为 Path 对象
        path = Path(dir_path)
        
        # 如果目录不存在，直接返回
        if not path.exists():
            print(f"目录不存在: {dir_path}")
            return
        
        # 如果是目录，先打印要删除的内容
        if path.is_dir():
            print(f"\n准备清理目录: {dir_path}")
            # 列出目录中的所有文件和文件夹
            items = list(path.glob("*"))
            if items:
                print(f"将删除以下 {len(items)} 个项目:")
                for item in items:
                    print(f"  - {item}")
                
                # 删除所有内容
                for item in items:
                    if item.is_file():
                        item.unlink()
                    elif item.is_dir():
                        shutil.rmtree(item)
                print(f"✓ 已清理目录: {dir_path}")
            else:
                print(f"目录已经是空的: {dir_path}")
    except Exception as e:
        print(f"清理目录时出错: {str(e)}")

def main():
    # 备份bofan目录到时间戳目录
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    shutil.copytree("bofan", f"/mymount/xuniji/bofan_backup_{timestamp}")
    # 备份taichi.py
    if os.path.exists("taichi.py"):
      shutil.copy("taichi.py", f"/mymount/xuniji/taichi_backup_{timestamp}.py")
    # 备份ocr_result.txt
    if os.path.exists("ocr_result.txt"):
      shutil.copy("ocr_result.txt", f"/mymount/xuniji/ocr_result_backup_{timestamp}.txt")
    

    """主函数，清理所有指定的目录"""
    # 要清理的目录列表
    directories = [
        "pic",
        "onepic",
        "bofan",
        "extracted_panels",
        "beijing_trimmed"
    ]
    
    print("开始清理操作...")
    
    # 清理每个目录
    for dir_path in directories:
        clean_directory(dir_path)
    
    print("\n清理完成！")

if __name__ == "__main__":
    # 请求用户确认
    print("此操作将删除以下目录中的所有文件：")
    print("- pic")
    print("- onepic")
    print("- bofan")
    print("- extracted_panels")
    print("- beijing_trimmed")
    
    confirmation = input("\n确定要继续吗？(y/n): ")
    
    if confirmation.lower() == 'y':
        main()
    else:
        print("操作已取消") 